package main

import (
    "log"
    "net/http"
    "time"

    "github.com/gin-gonic/gin"
    "github.com/wenlng/go-captcha/v2"
)

func main() {
    // 配置验证码服务（5分钟内自动失效）
    srv := captcha.NewService(
        captcha.Config{
            Driver:  captcha.DriverImage,  // 使用图片验证码
            Expires: 5 * time.Minute,
        },
        captcha.MemoryStorage{},         // 内存存储（生产环境建议用Redis）
    )


    // 创建Gin路由
    r := gin.Default()

    // 生成验证码接口
    r.GET("/captcha", func(c *gin.Context) {
        id, err := srv.Generate()
        if err != nil {
            c.JSON(http.StatusInternalServerError, gin.H{"error": "生成验证码失败"})
            return
        }

        // 设置防缓存头
        c.Header("Cache-Control", "no-store, no-cache, must-revalidate")
        c.Header("Pragma", "no-cache")
        c.Header("Expires", "0")

        // 输出图片流
        c.Data(http.StatusOK, "image/png", srv.Image(id))
    })

    // 验证接口
    r.POST("/verify", func(c *gin.Context) {
        id := c.PostForm("id")
        code := c.PostForm("code")

        valid, err := srv.Verify(id, code)
        if err != nil || !valid {
            c.JSON(http.StatusBadRequest, gin.H{"valid": false})
            return
        }

        c.JSON(http.StatusOK, gin.H{"valid": true})
    })

    log.Println("🚀 验证码服务已启动：http://localhost:8080")
    r.Run(":8080")
}